Fork me on GitHub

SpringMVC 源码分析与实战

注意:所有文章除特别说明外,转载请注明出处.

第2章 常用的协议与标准

在JavaWeb中常用的协议包括DNS协议,TCP/IP协议,HTTP协议和JavaWeb开发中的Servlet。

2.1 DNS协议

该协议的作用是将域名解析为IP。我们将域名发过去,然后域名服务器就能够给我们返回相应的IP,在win中可以使用命令 nslookup 命令查看DNS解析的结果。

2.2 TCP/IP协议与Socket

IP协议是用来查找地址的,对应着网际互联层,其只负责找到地址。TCP协议是用来规范传输规则的,对应着传输层,完成货物的传输工作。TCP在传输之前会进行三次沟通(三次握手),传完数据断开的时候要进行四次沟通(四次挥手)。

2.3 HTTP协议

该协议是应用层的协议,在TCP/IP协议接收到数据之后需要通过HTTP协议来解析才可以使用。我们应该理解HTTP协议中的报文结构。在HTTP协议中的报文分为请求报文(request message)和响应报文(response message)两种类型,这两种类型包含三部分:首行、头部、主体。

2.4 Servlet与JavaWeb开发

Servlet是J2EE标准的一部分,是JavaWeb的开发标准。Servlet的作用是对接收到的数据进行处理并生成要返回给客户端的结果。


第3章 DNS的设置

在这里介绍DNS的设置,主要包括DNS解析、Win7设置DNS服务器以及win设置本机域名和IP对应关系。

3.1 DNS解析

DNS解析是将相应的域名解析为对应的IP地址。

解析的内容

记录类型:
    A:A记录表示将域名解析到IP(一个域名可以有多条A记录)
    CNAME:该记录是将域名解析到另一域名(表作为另一个域名的别名)

主机记录:
    WWW BBS等,就是域名前面的部分,如果要解析顶级域名,也就是前面没有内容则使用@代替

解析线路:
    通过这一设置可以将不同线路的用户解析到不同的服务器。如:将联通用户解析到一个服务器,将电信用户解析到另一个服务器。

记录值:
    解析的目标值,如:A记录就是IP,CNAME记录就是对应的目标域名。

TTL:
    本地DNS服务器缓存解析结果的时间

提示:一个域名可以添加多条解析记录

3.2 win7设置DNS服务器

该设置是将网络属性中的ipv4属性的首选DNS服务器的ip设置为:114.114.114.114

3.3 win设置本机域名与ip的对应关系

通过hosts设置


第4章 Java中Socket的用法

Java中的Socket可以分为普通Socket与NioSocket两种。

4.1 普通Socket用法

Java中的网络通信通过Socket实现,Socket分为ServerSocket与Socket两大类,ServerSocket用于服务端,可以通过accept方法监听请求,监听请求后返回Socket,Socket用于具体完成数据传输,客户端直接使用Socket发起请求并传输数据。

ServerSocket的使用

1.创建ServerSocket
2.调用创建出来的ServerSocket的accept方法进行监听(accept方法是阻塞方法,在调用accept方法之后,程序会停下来等待连接请求)
3.在accept方法获取请求后,用返回的Socket创建Reader和Writer来接收和发送数据

Socket的使用

1.创建Socket (这里讲目标主机的地址和端口号传入即可)

4.2 NioSocket的用法

在Java1.4之后增加了新的io模式(nio - new IO),在底层采用新的处理方式,极大的提高了io的效率。nio提供相应的工具:ServerSocketChannel和SocketChannel,它们分别对应原来的ServerSocket和Socket。在这里我们如果要理解NioSocket的使用需要先理解:Buffer、Channel和Selector。

NioSocket的使用

1.首先创建ServerSocketChannel,然后注册Selector,接下来用Selector接收请求处理。
2.ServerSocketChannel可以使用自己的静态工厂方法open创建

第6章 详解Servlet

Servlet的结构图包括:

HttpServlet
     |
    GenericServlet
    /\
ServletConfig Servlet

第8章 SpringMVC体验

8.1 SpringMVC简单配置

1.在web.xml中配置Servlet
2.创建Spring MVC的xml文件
3.创建Controller和view

提示:mvc:annotation-driven/ 是SpringMVC提供的一键式配制方法,配置此标签之后SpringMVC会帮助我们自动做一些注册组件之类的事情。配置 context:component-scan/ 标签类扫描通过注释配置的类。 通过配置 context:include-filter 标签设置只扫描@Controller标签。 如果没有配置ViewResolver,SpringMVC自动使用默认的InternalResourceViewResolver作为ViewResolver,prefix和suffix都为空。


第9章 创建SpringMVC之器

本章介绍SpringMVC自身的创建过程,SpringMVC中的Servlet包括:HttpServletBean | FrameworkServlet | DispatcherServlet。HttpServletBean继承HTTPServlet,作用是将Servlet中配置的参数设置到相应的属性。FrameworkServlet初始化了WebApplicationContext。DispatcherServlet初始化了自身的9个组件。


第10章 Spring mvc之用

10.1 HttpServletBean

HttpServletBean主要参与创建工作,没有涉及请求处理。

10.2 FrameworkServlet

我们知道Servlet的处理过程,首先从Servlet接口的service()方法开始,然后在HttpServlet的service()方法中根据请求类型不同将请求路由到doGet|doHead|doPost|doPut|doDelete|doOptions|doTrace七个方法,同时做了doHead|doOptions|doTrace的默认实现,其中doHead调用doGet,返回只有header没有body的response。

10.3 DispatcherServlet

Handler | HandlerMapping | HandlerAdapter :Handler表示用来干活的工具,如:车床等。HandlerMapping表示根据加工的需求选择什么设备加工。HandlerAdapter表示操作设备的工人,从而不同的Handler需要不同的HandlerAdapter去使用。

提示:这里view 和 ViewResolver类似,view用来展示数据,而ViewResolver用来查找view。

10.4 doDispatch

doDispatch大概分为两个部分:处理请求和渲染页面。



本文标题:SpringMVC 源码分析与实战

文章作者:Bangjin-Hu

发布时间:2019年10月15日 - 09:22:26

最后更新:2020年03月30日 - 08:16:10

原始链接:http://bangjinhu.github.io/undefined/第1-10章 SpringMVC 源码分析与实践/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Bangjin-Hu wechat
欢迎扫码关注微信公众号,订阅我的微信公众号.
坚持原创技术分享,您的支持是我创作的动力.